The present invention is directed to a network printing system, and, more particularly, is directed to a method and print job command for establishing two-way communications with a remote printer having an unknown address and for requesting information from the remote printer.
As the size of networked systems increases from a few connected computers located near each other to several thousand machines of various types and sizes scattered at great distances from each other, the demands on the network printers also increase. Additionally, the ability of host systems to communicate interactively with the network printers becomes increasingly important.
A printer is a peripheral device that can be shared on a network connected to a print server. Also, a printer can directly connect to the network by including a network interface card or the network interface in the printer which allows the printer to run its own print server software and function as a regular network node. In a typical Windows environment, for example, the network printer is a one-way printer. For a one-way printer, the only communication path is from the host computer to the printer without any ability for the printer to notify the host computer of the job status such as whether the print job has been successfully completed.
Typically, networks utilize printers treated as shared resources connected to the networks via print servers. Recently developed software programs have become available allowing the host systems or computers to communicate interactively with the network printers. With this capability, host resident printing software can accomplish tasks such as determining the configuration of the device automatically and reporting the status of a print job back to the submitting host or client system. Unfortunately, interactive or bidirectional communication with the network printer is not always possible. Printing has traditionally been oriented around delivering print jobs to a printer, rather than enabling interactive communication with the host that submitted the print job. Often, because of the manner in which the printer is coupled to the host system, the host may only submit jobs to the printer. Additionally, while the spooler resident on the host system can sometimes access printer status information, it may not provide a way for other host based printer software, such as the printer driver, for example, to communicate bi-directionally with the printer.
Typically, the network printer is a stand-alone peripheral device which is tasked to perform in an increasing number of network and non-network communication environments. In order for two devices to communicate, it is necessary that both parties support the same protocols and know how to find each other through some sort of address information. A printer and an interested host machine can both support the same protocol, but the printer may still be unable to communicate with the host because they lack knowledge of each other""s address information.
Conventionally, printer address information is obtained by host software by inspecting the host system. In a Windows environment, for example, the host system maintains a registry of system information. This registry contains entries that describe each printer connection point (subsequently referred to as a port). The information maintained in these entries further depends on the type of printer connection point or port. However, the entry format associated with each type of port type is different. For some port types, it is possible to determine the network address information necessary to communicate bi-directionally with the printer; for other port types, the determination of the printer address information is difficult or impossible. For example, when the format of the data entry for the port type is not known, it is impossible to determine the address information for the associated printer. Also, when the port refers to a remote print server, it is impossible to obtain the printer address information unless some provision has been made by the remote print server to make the address information available to connected host or client systems.
Presently, host systems or print clients obtain print job status by periodically polling the printer. After the print job is sent to the printer, a job status agent, e.g., DocWise, is invoked to monitor the status of the job. This agent periodically checks the status of the print job by sending PML or SNMP requests to the printer. Although not typically used, such an agent could use SNMP traps to obtain asynchronous status updates; however, the number of print clients that can register for traps is limited which makes the use of traps unreliable.
The present practice of polling the printer to obtain job status presents several disadvantages. First, polling generates unnecessary network traffic. The job status agent may send SNMP requests to the printer only to determine that the status of the printer has not changed. If a print job ends abnormally, the job status agent may remain active continuing to poll even though the job it is polling for no longer exists. Second, polling results in delayed notification of job status. The job status agent only finds out about status changes when SNMP or PML requests are made to the printer. If the job agent only samples job status once a minute, it may be a long as a minute before the agent is notified of a change in the job status. Increasing the polling rate can reduce this problem; however, increasing the polling rate exacerbates the problem of unnecessary network traffic. Third, the use of traps to obtain asynchronous notification of job status changes is troublesome because of the limited number of print clients that can register for traps. Finally, in order to poll the printer for job status, the job agent must know the printer address.
What is therefore needed is a method and means of establishing direct two-way communication between a print client and a printer, and providing a request for print job status and other printer information from the printer without the need to periodically poll the printer.
In a preferred embodiment, the present invention may be implemented as a method to provide a network printer with the address of a print client to establish direct, two-way communications between the print client and the printer. Once two-way communications between the print client and the printer have been established, the print client and other interested parties may receive print job status directly without the use of a job status agent polling the printer or creating unnecessary network traffic.
In another preferred embodiment, the present invention may be implemented as a method of establishing two-way communication between a host system and a device in a network wherein one-way job submission communication between the host system and at least one device has been provided. In such a system, typically, the device address initially is unknown to the host system. In fact, the host system may only be aware of the address of a first server in a string of servers. The host system submits a job to a device with the job including information describing the host system""s address. The job may be a typical job submitted in the course of the host system""s routine operations, or, preferably, the job may be a special job containing only the information and instructions enabling the device to contact and respond to the host system after the device receives the special job. Once the device receives the job, it responds to the host system at the specified address and provides the host system with the device address thus allowing two-way communications to be established between the host system and the device.
In another preferred embodiment, the job submitted by the host system will include instructions requiring the device to perform other actions in addition to responding to the host system with the device address. For example, the additional instructions may require the device to report job status and/or device status to the host system. The instructions may also designate other destinations for the device to report to in addition to the host system.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.